<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="generator" content="VNote">

    <title>安装部署</title>

    <style type="text/css">
    div.code-toolbar > div.toolbar {
    display: none;
}

    </style>

    <style type="text/css">
    /* VX_STYLES_PLACEHOLDER */

    #vx-content.vx-section-number, #vx-content.vx-section-number-2 h1, #vx-content.vx-section-number-3 h1, #vx-content.vx-section-number-3 h2 { counter-reset: section1 0 section2 0 section3 0 section4 0 section5 0 section6 0; }
#vx-content.vx-section-number-1 h1, #vx-content.vx-section-number-2 h2, #vx-content.vx-section-number-3 h3 { counter-reset: section2 0 section3 0 section4 0 seciton5 0 section6 0; }
#vx-content.vx-section-number-1 h2, #vx-content.vx-section-number-2 h3, #vx-content.vx-section-number-3 h4 { counter-reset: section3 0 section4 0 section5 0 section6 0; }
#vx-content.vx-section-number-1 h3, #vx-content.vx-section-number-2 h4, #vx-content.vx-section-number-3 h5 { counter-reset: section4 0 section5 0 section6 0; }
#vx-content.vx-section-number-1 h4, #vx-content.vx-section-number-2 h5 { counter-reset: section5 0 section6 0; }
#vx-content.vx-section-number-1 h5 { counter-reset: section6 0; }
#vx-content.vx-section-number-1 h1::before, #vx-content.vx-section-number-2 h2::before, #vx-content.vx-section-number-3 h3::before { counter-increment: section1 1; content: counter(section1) ". "; }
#vx-content.vx-section-number-1 h2::before, #vx-content.vx-section-number-2 h3::before, #vx-content.vx-section-number-3 h4::before { counter-increment: section2 1; content: counter(section1) "." counter(section2) ". "; }
#vx-content.vx-section-number-1 h3::before, #vx-content.vx-section-number-2 h4::before, #vx-content.vx-section-number-3 h5::before { counter-increment: section3 1; content: counter(section1) "." counter(section2) "." counter(section3) ". "; }
#vx-content.vx-section-number-1 h4::before, #vx-content.vx-section-number-2 h5::before, #vx-content.vx-section-number-3 h6::before { counter-increment: section4 1; content: counter(section1) "." counter(section2) "." counter(section3) "." counter(section4) ". "; }
#vx-content.vx-section-number-1 h5::before, #vx-content.vx-section-number-2 h6::before { counter-increment: section5 1; content: counter(section1) "." counter(section2) "." counter(section3) "." counter(section4) "." counter(section5) ". "; }
#vx-content.vx-section-number-1 h6::before { counter-increment: section6 1; content: counter(section1) "." counter(section2) "." counter(section3) "." counter(section4) "." counter(section5) "." counter(section6) ". "; }
#vx-content.vx-constrain-image-width img, #vx-content.vx-constrain-image-width div.vx-plantuml-graph > svg, #vx-content.vx-constrain-image-width div.vx-mermaid-graph, #vx-content.vx-constrain-image-width div.vx-flowchartjs-graph, #vx-content.vx-constrain-image-width div.vx-wavedrom-graph { max-width: 100% !important; height: auto !important; }
figure { margin: auto; }
figcaption { font-style: italic; }
#vx-content.vx-image-align-center figure { text-align: center; }
#vx-content.vx-image-align-center figcaption { text-align: center; }
#vx-content.vx-image-align-center div.vx-plantuml-graph, #vx-content.vx-image-align-center div.vx-mermaid-graph, #vx-content.vx-image-align-center div.vx-flowchartjs-graph, #vx-content.vx-image-align-center div.vx-wavedrom-graph { margin-left: auto; margin-right: auto; }
.vx-table-of-contents ol { list-style: none; }
#vx-content.vx-section-number-1 .vx-table-of-contents ol { counter-reset: toc 0; }
#vx-content.vx-section-number-1 .vx-table-of-contents ol li { counter-increment: toc 1; }
#vx-content.vx-section-number-1 .vx-table-of-contents ol li::before { content: counters(toc, ".") ". "; font-family: cursive; }
#vx-content.vx-section-number-2 .vx-table-of-contents > ol > li ol { counter-reset: toc 0; }
#vx-content.vx-section-number-2 .vx-table-of-contents > ol > li ol li { counter-increment: toc 1; }
#vx-content.vx-section-number-2 .vx-table-of-contents > ol > li ol li::before { content: counters(toc, ".") ". "; font-family: cursive; }
#vx-content.vx-section-number-3 .vx-table-of-contents > ol > li > ol > li ol { counter-reset: toc 0; }
#vx-content.vx-section-number-3 .vx-table-of-contents > ol > li > ol > li ol li { counter-increment: toc 1; }
#vx-content.vx-section-number-3 .vx-table-of-contents > ol > li > ol > li ol li::before { content: counters(toc, ".") ". "; font-family: cursive; }
.vx-header-anchor { visibility: hidden; vertical-align: middle; }
.vx-header-anchor::after { content: attr(vx-data-anchor-icon); }
#vx-content h1:hover .vx-header-anchor, #vx-content h2:hover .vx-header-anchor, #vx-content h3:hover .vx-header-anchor, #vx-content h4:hover .vx-header-anchor, #vx-content h5:hover .vx-header-anchor, #vx-content h6:hover .vx-header-anchor { visibility: visible; vertical-align: middle; }
#vx-content.vx-indent-first-line p { text-indent: 2em; }
body.vx-transparent-background { background-color: transparent !important; }
#vx-content.vx-nonscrollable pre { white-space: pre-wrap !important; word-break: break-all !important; overflow: hidden !important; }
#vx-content.vx-nonscrollable pre code { white-space: pre-wrap !important; word-break: break-all !important; }
#vx-content.vx-nonscrollable code, #vx-content.vx-nonscrollable a { word-break: break-all !important; }
body { margin: 0px auto; font-family: NSimSun, 新宋体, SimSun, 宋体; color: rgb(34, 34, 34); line-height: 1.5; padding: 16px; background-color: rgb(255, 255, 255); font-size: 16px; }
h1, h2, h3, h4, h5, h6 { color: rgb(34, 34, 34); font-weight: bold; margin-top: 20px; margin-bottom: 10px; padding: 0px; }
p { padding: 0px; margin-bottom: 16px; }
h1 { font-size: 26px; }
h2 { font-size: 24px; }
h3 { font-size: 22px; }
h4 { font-size: 20px; }
h5 { font-size: 19px; }
h6 { font-size: 18px; }
a { color: rgb(0, 153, 255); margin: 0px; padding: 0px; vertical-align: baseline; text-decoration: none; word-break: break-word; }
a:hover { text-decoration: underline; }
ul, ol { padding: 0px 0px 0px 24px; }
li { line-height: 24px; }
li ul, li ol { margin-left: 16px; }
p, ul, ol { font-size: 16px; line-height: 24px; }
pre { display: block; overflow: auto hidden; tab-size: 4; }
code { font-family: "YaHei Consolas Hybrid", Consolas, Monaco, "Andale Mono", monospace, "Courier New"; color: rgb(0, 0, 0); word-break: break-word; border: 1px solid rgb(221, 221, 221); background: rgb(255, 255, 255); padding: 0px 5px; }
pre code { display: block; padding-left: 0.5em; padding-right: 0.5em; color: rgb(34, 34, 34); background-color: rgb(224, 224, 224); line-height: 1.5; font-family: "YaHei Consolas Hybrid", Consolas, Monaco, "Andale Mono", monospace, "Courier New"; white-space: pre; tab-size: 4; }
aside { display: block; float: right; width: 390px; }
blockquote { color: rgb(0, 0, 0); border-left: 3px solid rgb(0, 136, 255); padding: 1em; margin-left: 0px; background: rgb(229, 243, 255); }
blockquote p { color: rgb(0, 0, 0); margin-block-start: 0px; margin-block-end: 0px; }
blockquote.red { border-left: 0.5em solid rgb(255, 17, 17); color: rgb(255, 17, 17); background: rgb(255, 220, 220); }
blockquote.red p { color: rgb(255, 17, 17); }
hr { display: block; text-align: left; margin: 1em 0px; border: none; height: 2px; background-color: rgb(153, 153, 153); }
table { padding: 0px; margin: 1rem 0.5rem; border-collapse: collapse; }
table tr { border-top: 1px solid rgb(204, 204, 204); background-color: rgb(255, 255, 255); margin: 0px; padding: 0px; }
table tr:hover { background-color: rgb(218, 218, 218); }
table tr th { font-weight: bold; border: 1px solid rgb(204, 204, 204); margin: 0px; padding: 6px 13px; }
table tr td { border: 1px solid rgb(204, 204, 204); margin: 0px; padding: 6px 13px; }
table tr th :first-child, table tr td :first-child { margin-top: 0px; }
table tr th :last-child, table tr td :last-child { margin-bottom: 0px; }
div.vx-mermaid-graph { margin: 16px 0px; overflow-y: hidden; }
div.vx-flowchartjs-graph { padding: 0px 5px; margin: 16px 0px; width: fit-content; overflow: hidden; }
div.vx-wavedrom-graph { padding: 0px 5px; margin: 16px 0px; width: fit-content; overflow: hidden; }
div.vx-plantuml-graph { padding: 5px 5px 0px; margin: 16px 0px; width: fit-content; overflow: hidden; }
::selection { background-color: rgb(25, 118, 210); color: rgb(255, 255, 255); }
::-webkit-scrollbar { background-color: rgb(245, 245, 245); width: 14px; height: 14px; border: none; }
::-webkit-scrollbar-corner { background-color: rgb(245, 245, 245); }
::-webkit-scrollbar-button { height: 14px; width: 14px; background-color: rgb(245, 245, 245); }
::-webkit-scrollbar-button:hover { background-color: rgb(218, 218, 218); }
::-webkit-scrollbar-button:active { background-color: rgb(192, 192, 192); }
::-webkit-scrollbar-track { background-color: rgb(245, 245, 245); }
::-webkit-scrollbar-thumb { border: none; background-color: rgb(205, 205, 205); }
::-webkit-scrollbar-thumb:hover { background-color: rgb(192, 192, 192); }
::-webkit-scrollbar-thumb:active { background-color: rgb(187, 187, 187); }
::-webkit-scrollbar-button:horizontal:increment { background-image: url('data:image/svg+xml;utf8,<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <g>    <g transform="rotate(-90 256.00000000000006,256) " id="svg_1">   <polygon fill="%23222222" id="svg_2" points="128,192 256,320 384,192  "/>  </g> </g></svg>'); background-repeat: no-repeat; background-size: contain; }
::-webkit-scrollbar-button:horizontal:decrement { background-image: url('data:image/svg+xml;utf8,<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <g>    <g transform="rotate(90 255.99999999999997,256.00000000000006) " id="svg_1">   <polygon points="128,192 256,320 384,192  " id="svg_2" fill="%23222222"/>  </g> </g></svg>'); background-repeat: no-repeat; background-size: contain; }
::-webkit-scrollbar-button:vertical:increment { background-image: url('data:image/svg+xml;utf8,<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <g>    <g transform="null" id="svg_1">   <polygon points="128,192 256,320 384,192  " id="svg_2" fill="%23222222"/>  </g> </g></svg>'); background-repeat: no-repeat; background-size: contain; }
::-webkit-scrollbar-button:vertical:decrement { background-image: url('data:image/svg+xml;utf8,<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <g>    <g transform="rotate(180 255.99999999999997,256) " id="svg_1">   <polygon points="128,192 256,320 384,192  " id="svg_2" fill="%23222222"/>  </g> </g></svg>'); background-repeat: no-repeat; background-size: contain; }
#vx-content span.vx-search-match { color: rgb(34, 34, 34); background-color: rgb(77, 182, 172); }
#vx-content span.vx-current-search-match { color: rgb(34, 34, 34); background-color: rgb(102, 187, 106); }
.vx-header-anchor { display: none !important; }
.lp_logo { width: 400px; height: 120px; background-image: url("http://www.lanhost.lovephp.com/assets/img/logo/lovephp.logo.000.svg"); background-size: 100%; background-repeat: no-repeat; background-position: center center; }
.lp_label { width: 120px; display: inline-block; }
.lp_qrcode { vertical-align: top; width: 160px; height: 160px; border: 5px solid rgb(255, 255, 255); }
code[class*="language-"], pre[class*="language-"] { color: black; background: none; font-size: 1em; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; overflow-wrap: normal; line-height: 1.5; tab-size: 4; hyphens: none; }
pre > code { border: none; }
pre[class*="language-"]::selection, pre[class*="language-"] ::selection, code[class*="language-"]::selection, code[class*="language-"] ::selection { text-shadow: none; background-color: rgb(25, 118, 210); color: rgb(255, 255, 255); }
@media print {
  code[class*="language-"], pre[class*="language-"] { text-shadow: none; }
}
pre[class*="language-"] { padding: 1em; margin: 1em 0px; overflow: auto; }
:not(pre) > code[class*="language-"], pre[class*="language-"] { background: rgb(255, 255, 255); }
:not(pre) > code[class*="language-"] { padding: 0.1em; border-radius: 0.3em; white-space: normal; }
.token.comment, .token.prolog, .token.doctype, .token.cdata { color: slategray; }
.token.punctuation { color: rgb(153, 153, 153); }
.token.namespace { opacity: 0.7; }
.token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol, .token.deleted { color: rgb(153, 0, 85); }
.token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: rgb(255, 136, 0); }
.token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string { color: rgb(154, 110, 58); }
.token.atrule, .token.attr-value, .token.keyword { color: rgb(136, 0, 136); }
.token.class-name { color: rgb(0, 0, 136); font-weight: bold; }
.token.regex, .token.important, .token.variable { color: rgb(0, 136, 255); }
.token.important, .token.bold { font-weight: bold; }
.token.italic { font-style: italic; }
.token.entity { cursor: help; }
pre[class*="language-"].line-numbers { position: relative; padding-left: 3.8em; counter-reset: linenumber 0; border: 1px solid rgb(221, 221, 221); }
pre[class*="language-"].line-numbers > code { position: relative; white-space: inherit; }
.line-numbers .line-numbers-rows { position: absolute; pointer-events: none; top: 0px; font-size: 100%; left: -3.8em; width: 3em; letter-spacing: -1px; border-right: 1px solid rgb(221, 221, 221); user-select: none; }
.line-numbers-rows > span { display: block; counter-increment: linenumber 1; }
.line-numbers-rows > span::before { content: counter(linenumber); color: rgb(153, 153, 153); display: block; padding-right: 0.8em; text-align: right; }
div.code-toolbar { position: relative; }
div.code-toolbar > .toolbar { position: absolute; top: 0.3em; right: 0.2em; transition: opacity 0.3s ease-in-out 0s; opacity: 0; }
div.code-toolbar:hover > .toolbar { opacity: 1; }
div.code-toolbar:focus-within > .toolbar { opacity: 1; }
div.code-toolbar > .toolbar .toolbar-item { display: inline-block; }
div.code-toolbar > .toolbar a { cursor: pointer; }
div.code-toolbar > .toolbar button { background: none; border: 0px; color: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: inherit; font-family: inherit; line-height: normal; overflow: visible; padding: 0px; user-select: none; }
div.code-toolbar > .toolbar a, div.code-toolbar > .toolbar button, div.code-toolbar > .toolbar span { color: rgb(187, 187, 187); font-size: 0.8em; padding: 0px 0.5em; background: rgba(224, 224, 224, 0.2); box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 0px 0px; border-radius: 0.5em; }
div.code-toolbar > .toolbar a:hover, div.code-toolbar > .toolbar a:focus, div.code-toolbar > .toolbar button:hover, div.code-toolbar > .toolbar button:focus, div.code-toolbar > .toolbar span:hover, div.code-toolbar > .toolbar span:focus { color: inherit; text-decoration: none; }
.vx-image-view-image { transition: all 0.3s ease 0s; }
.vx-modal-box { display: none; position: fixed; z-index: 1000; padding-top: 50px; left: 0px; top: 0px; width: 100%; height: 100%; overflow: hidden; background-color: rgba(51, 56, 66, 0.85); }
.vx-modal-content { margin: auto; display: block; width: auto; height: auto; cursor: move; }
.vx-modal-content { animation-name: zoom; animation-duration: 0.6s; }
@-webkit-keyframes zoom { 
  0% { transform: scale(0); }
  100% { transform: scale(1); }
}
@keyframes zoom { 
  0% { transform: scale(0); }
  100% { transform: scale(1); }
}
span.vx-modal-close { position: absolute; z-index: 1000; top: 15px; right: 35px; color: rgb(171, 178, 191); font-size: 40px; font-weight: bold; transition: all 0.3s ease 0s; }
span.vx-modal-close:hover, span.vx-modal-close:focus { color: rgb(215, 218, 224); text-decoration: none; cursor: pointer; }
ul.contains-task-list { list-style-type: none; }
.vx-alert { position: relative; padding: 0.75rem 1.25rem; margin-bottom: 1rem; border: 1px solid transparent; border-radius: 0.25rem; }
.alert-primary { color: rgb(0, 64, 133); background-color: rgb(204, 229, 255); border-color: rgb(184, 218, 255); }
.alert-secondary { color: rgb(56, 61, 65); background-color: rgb(226, 227, 229); border-color: rgb(214, 216, 219); }
.alert-success { color: rgb(21, 87, 36); background-color: rgb(212, 237, 218); border-color: rgb(195, 230, 203); }
.alert-info { color: rgb(12, 84, 96); background-color: rgb(209, 236, 241); border-color: rgb(190, 229, 235); }
.alert-warning { color: rgb(133, 100, 4); background-color: rgb(255, 243, 205); border-color: rgb(255, 238, 186); }
.alert-danger { color: rgb(114, 28, 36); background-color: rgb(248, 215, 218); border-color: rgb(245, 198, 203); }
.alert-light { color: rgb(129, 129, 130); background-color: rgb(254, 254, 254); border-color: rgb(253, 253, 254); }
.alert-dark { color: rgb(27, 30, 33); background-color: rgb(214, 216, 217); border-color: rgb(198, 200, 202); }

    </style>

    <script type="text/javascript">
        /* VX_SCRIPTS_PLACEHOLDER */
    </script>

    <!-- VX_SCRIPTS_PLACEHOLDER -->

    <!-- VX_HEAD_PLACEHOLDER -->
</head>
<body class="vx-transparent-background">
    <div class="container-fluid">
    <div class="row flex-xl-nowrap">
        

        <div id="post-content" class="col-12 col-md-9 col-xl-10 py-md-3 pl-md-5 bd-content">
        <div id="vx-content" class="vx-constrain-image-width line-numbers"><h1 id="安装部署" class="source-line" data-source-line="0">安装部署<a class="vx-header-anchor" href="#安装部署" vx-data-anchor-icon="¶"></a></h1>
<blockquote>
<p class="source-line" data-source-line="3">下载代码包,包内目录结构如下:</p>
</blockquote>
<div class="code-toolbar"><pre class="language-txt line-numbers"><code class="source-line language-txt" data-source-line="5">├─hbuilder            //hbuilder工程存放位置
├─iconfont            //iconfont图标,代码中用的是在线字体,并不是这里的字体
├─resouce             //相关资源文件,一些素材
├─web                 //lovephp程序后台主文件夹
├─nginx配置示例.conf
├─初始数据.sql
├─安装部署.html
└─安装部署.md
<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre></div>
<blockquote>
<p class="source-line" data-source-line="16">1.在nginx或apache中配置好网站目录,root目录指向代码中的<code>web</code>文件夹,代码包中有nginx配置参考,apache请自行转换,以配置<code>http://xxx.com</code>为例<br>
2.访问<code>http://xxx.com/check.php</code>,确定当前环境是否正常可用<br>
3.导入<code>初始数据.sql</code>到mysql数据库<br>
4.修改<code>prj.config.php/Dbconfig</code>写上数据库访问信息<br>
5.访问<code>http://xxx.com</code><br>
6.后台登录地址<code>http://xxx.com/admin</code>,线上模式<code>http://xxx.com/admin?lovephp_changeme</code>,<code>lovephp_changeme</code>是默认token,请自行更改</p>
</blockquote>
<blockquote>
<p class="source-line" data-source-line="24">更多信息请访问:<code>lovephp.com</code></p>
</blockquote>
</div>
        </div>
    </div>
    </div>

    
</body>
</html>
